eval  js用法

/*eval函数接收一个参数s，如果s不是字符串，则直接返回s。
    否则执行s语句。如果s语句执行结果是一个值，则返回此值，否则返回undefined。 */

    // 特别注意的是对象声明语法“{}”并不能返回一个值，需要用括号括起来才会返回值
    var code1='"a" + 2';    //表达式
    varcode2='{a:2}';       //语句
    alert(eval(code1));     //->'a2'
    alert(eval(code2));     //->undefined
    alert(eval('(' + code2 + ')')); //->[object Object]
        //对于对象声明语句来说，仅仅是执行，并不能返回值。为了返回常用的“{}”这样的对象声明语句，必须用括号括住，以将其转换为表达式，才能返回其 值。

// 如何在函数内执行全局代码。为了说明这个问题，先看一个例子：
    // 复制代码 代码如下:
    var s='global';         //定义一个全局变量
    function demo1(){
        eval('var s="local"');
    }
    demo1();
    alert(s);               //->global
        //可以发现eval函数的特点，它总是在调用它的上下文变量空间（也称为：包，closure）内执行，无论是变量定义还是函数定义都是如此，所以如下的代码会产生函数未定义的错误：
